import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../components/login.vue'
import Home from '../components/Home.vue'
// 导入欢迎页面的组件
import Welcome from '../components/Welcome.vue'
import User from '../components/user/User.vue'
// 导入权限列表组件
import Rights from '../components/power/Rights.vue'
// 导入角色列表组件
import Roles from '../components/power/Roles.vue'
// 导入商品分类组件
import Cate from '../components/goods/Cate.vue'
// 导入分类参数组件
import Params from '../components/goods/Params.vue'
// 导入商品列表组件
import Goods from '../components/goods/Goods.vue'
// 导入商品列表组件里面添加按钮对应的组件
import Add from '../components/goods/Add.vue'
// 导入订单管理页面组件
import Order from '../components/order/Order.vue'
// 导入数据报表组件
import Report from '../components/report/Report.vue'

Vue.use(VueRouter)
const router = new VueRouter({
  routes: [
    { path: '/', redirect: '/login' },
    { path: '/login', component: Login },
    // 将欢迎页面的组件注册为home页面的子组件
    {
      path: '/home',
      component: Home,
      redirect: '/welcome',
      children: [
        { path: '/welcome', component: Welcome },
        { path: '/users', component: User },
        // 将权限列表组件组测为Home的子组件
        { path: '/rights', component: Rights },
        // 将角色列表组件注册为home的子组件
        { path: '/roles', component: Roles },
        // 将商品分类组件注册为home的子组件
        { path: '/categories', component: Cate },
        // 将分类参数组件设置为home的子组件
        { path: '/params', component: Params },
        // 将商品列表组件注册为home的子组件
        { path: '/goods', component: Goods },
        // 将商品列表的子组件添加按钮组件注册为home的子组件
        { path: '/goods/add', component: Add },
        // 将订单管理页面注册为home的子组件
        { path: '/orders', component: Order },
        // 将数据报表组件注册为home的子组件
        { path: '/reports', component: Report }
      ]
    }
  ]
})

// 挂载路由导航守卫
router.beforeEach((to, form, next) => {
  // to要访问的路径
  // form代表从那个路径跳过俩
  // next时一个函数，表示放行
  // next()放行next('/login')强制跳转
  if (to.path === '/login') return next()
  // 代码走到这里，表示访问的不是login，出login外的其他页面都需要用户登录以后才能访问
  // 所以要检查以wimdow.session下面是否存储了token
  const tokenStr = window.sessionStorage.getItem('token')
  if (!tokenStr) return next('/login')
  next()
})

export default router
